﻿function app_start() {
    "use strict";
    $("body").attr("ng-app", "MyForm");
    $("body").attr("ng-controller", "MyForm");
    var m = angular.module("MyForm", ["ngW8", 'angular-gestures']);

    m.controller("MyForm", ["$templates", "$scope", function ($templates, $scope) {
        
        //ngW8.$("$store").$clear();
        /* định nghĩa thông tin sử dụng trong toàn bộ hệ thốn*/
        window.top.$navigator = {
            userInfo: function () { return ngW8.$("$store").$get("UserInfo") },
            module: undefined/*Chỉ mục của module hiện hành*/,
            form: undefined/*Chỉ mục của chức năng hiện hành*/,
            menu:undefined/*menu info*/
        };
        /*Đăng ký các template sử dụng*/
        $templates.$registerTemplate([
            "session_page",
            "hub_page_detail",
            "login",
            "header",
            "header_session",
            "top_bar",
            "user_menu",
            "center",
            "tool_bar",
            "list_view",
            "view",
            "bottom_toolbar",
            "k_grid_view",
            "toolbar_button"
        ]);
        ngW8.$("$application").$setNoneHistoryPages([
            "/controls/MessageBox.html",
            "/user/changePassword.html"
        ]);
        /*Đặt root scope, vì khi load template đòi hỏi phải có ít nhất 1 scope*/
        ngW8.$rootScope = $scope;
        /*Đặt đường dẫn gốc của hệ thống template*/
        ngW8.$("$loader").$setRootTemplate("ms-appx:////pages/");
        ngW8.$("$application").$onLoadPageError(function (sender) {
            if (sender.error.status == 500) {
                ngW8.$("$msg").$show("'" + sender.path + "' was not found");
            }
        });
        ngW8.$("$application").$onBeforeCreateNewScope(function () {
            
            var scope = ngW8.$("$application").$getCurrentScope();
          
            if (!scope) return;
            
            if (scope.$$$path) {
                ngW8.$("$application").$addHistory(scope.$$$path);
            }
            

        });
        ngW8.$("$application").$onCreateNewScope(function (scope) {
          
            
            scope.$dateToString = function (data, format) {
                if (!format)
                    format="dd/MM/yyyy"
                return ngW8.$("$filter")("date")(data,format);
            }
            scope.$cloneData = function (data) {
                return Function('', 'return ' + JSON.stringify(data))();
            }
            if (scope.$$$path == "/hubpage/hubpage_sub.html") {
                //dat lai de lay dung language
                scope.$$$templatePath = "ms-appx:////pages//hubpage/hubpage.html";
                window.$navigator.form = undefined;
            }
           
            ngW8.$("$application").$setCurrentScope(scope);
            /*Trước khi template hiển thị, phải nạp ngôn ngữ từ Web service*/
            ngW8.$("$wslang").$apply(scope, function (sender) {
                applyGlobalResource(scope);
                sender.$$$done();

            });

        });
        ngW8.$("$application").$onCallWebServiceError(function (error) {
            /*khi liên lạc với Web service lỗi*/
            if ((error.url) && (error.url.toLowerCase().indexOf("/language.svc/") > -1)) {
                if ((error.error.status == 0)) {
                    /*nếu web service bị lỗi, hiển thị trang cài đặt Web service*/

                    ngW8.$("$loader").$load($scope, "Commons/ConnectSettings.html", function (loginScope, ele) {
                        $("body").html("");
                        ele.appendTo($("body")[0]);
                    });
                    return true;
                }
            }
            if ((error.url) && (error.url.toLowerCase().indexOf("/language.svc/") > -1)) {
                if ((error.error.status == 404)) {
                    /*Lỗi này xãy ra khi web service không còn hoạt động*/
                    ngW8.$("$store").$clear("$SERVICE_URL");
                    ngW8.$("$msg").$show("Can not connect to server", function (sender) {
                        ngW8.$("$loader").$load($scope, "Commons/ConnectSettings.html", function (loginScope, ele) {
                            $("body").html("");
                            ele.appendTo($("body")[0]);
                            sender.hide();
                            $(".indeterminate").hide();
                        });
                    }, function (sender) {
                        sender.hide();
                    });
                    return true;
                }
            }
        });

        if (!ngW8.$("$store").$get("$SERVICE_URL")) {
            /*nếu chưa cài đặt Web service, hiển thị trang cài đặt*/
            ngW8.$("$loader").$load($scope, "Commons/ConnectSettings.html", function (loginScope, ele) {
                $("body").html("");
                ele.appendTo($("body")[0]);
            });
            return;
        }
        loadGlobalResourceLanguage(function () {
            //ngW8.$("$store").$clear("UserInfo");



            /*nếu hệ thống Web service đã cài đặt xong, kiểm tra xem máy này đã login lần trước chưa*/
            ngW8.$("$application").$addHistory("/hubpage/hubpage.html");
            if (ngW8.$("$store").$get("UserInfo") && (ngW8.$("$store").$get("UserInfo").TokenID)) {
                ngW8.$("$loader").$load($scope.$root, "/hubpage/hubpage.html", function (hubScope, ele) {

                    $("body").html("");
                    ele.appendTo($("body")[0]);
                    ngW8.$("$wslang").$apply(hubScope);
                });
            }
            else {
                /*nếu chưa nạp trang login*/
                ngW8.$("$loader").$load($scope, "Commons/Login.html", function (loginScope, ele) {

                    $("body").html("");
                    ele.appendTo($("body")[0]);

                });
            }
        });
    }]);
};